Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Conceptos de Arquitectura de Computadoras (resumido de William Stallings) (página 2)




Enviado por Juan Ramallo



Partes: 1, 2

  • Segmentación de cauce,
    introducción del paralelismo en un programa secuencial
    constituido por instrucciones de máquina

  • Múltiples procesadores, cubre
    diferentes organizaciones y objetivos

  • Arquitectura de computador de
    repertorio reducido de instrucciones

  • Elementos principales de los diseños
    de un RISC son:

    Características de la
    ejecución de instrucciones y los partidarios
    RISC:

    • Operaciones realizadas, funciones que
      lleva a cabo el procesador y su interacción con la
      memoria, algunas instrucciones HLL conducen a muchas
      operaciones de código máquina

    • Operandos, mayor cantidad de variables
      escalares locales que constantes enteras y
      matrices/estructuras

    • Llamadas a procedimientos, son las
      operaciones que consumen más tiempo en programas HLL
      compilados, el número de parámetros y variables
      que manejan un procedimiento y la profundidad de anidamiento
      son aspectos importantes; según el estudio de
      Tanenbaum, el 98 por ciento de los procedimientos llamados
      dinámicamente se les pasaba menos de seis argumentos y
      el 92 por ciento de ellos usaban menos de seis variables
      escalares locales

    Al utilizar un amplio banco de
    registros
    existieron dos aproximaciones:

    • Aproximación por
      software
      , consiste en confiar al compilador la
      maximización del uso de los registros el compilador
      intentará asignar registros a las variables que se
      usen más en un período de tiempo dado; requiere
      el uso de sofisticados algoritmos de análisis de
      programas.

    • Aproximación por
      hardware
      , consiste en usar más registros de
      manera que puedan mantenerse en ellos más variables
      durante períodos de tiempo más
      largos.

    Ventanas de registros

    El uso de muchos registros debería
    reducir la necesidad de acceder a memoria, el objetivo del
    diseño es organizar los registros de tal modo que se
    alcance esa meta. En un procedimiento típico, se emplean
    pocos parámetros de llamada y variables locales, y la
    profundidad de activación de procedimientos es
    pequeña. Para aprovechar estas propiedades se usan
    múltiples conjuntos pequeños de registros, cada uno
    asignado a un procedimiento distinto. Una llamada a un
    procedimiento hace que el procesador conmute
    automáticamente a una venta de registros distinta de
    tamaño fijo en lugar de salvaguardar los registro en
    memoria. Las ventanas de procedimientos adyacentes están
    parcialmente solapadas para permitir el paso de
    parámetros. La ventana se divide en tres partes o
    áreas de tamaño fijo:

    • 1. Registros de parámetros
      que contienen parámetros pasados al procedimiento
      actual desde el que lo llamó y los resultados a
      devolver al que lo llamó

    • 2. Registros locales que se usan
      para variables locales

    • 3. Registros temporales que se
      usan para intercambiar parámetros y resultados con el
      siguiente nivel más bajo (el procedimiento llamado por
      el procedimiento en curso)

    Los registros temporales de un nivel son
    físicamente los mismos que los registros de
    parámetros del nivel más bajo adyacente. Este
    solapamiento posibilita que los parámetros se pasen sin
    que exista una transferencia de datos real. Se deduce que en un
    banco de registros de N ventanas puede contener solo N-1
    activaciones de procedimientos, para N no muy grande.

    Variables globales

    • El compilador asigna posiciones de
      memoria a las variables declaradas como globales en un HLL y
      todas las instrucciones de máquina que referencien a
      esas variables usen operandos referenciados en memoria. Esto
      es ineficiente si se accede frecuentemente.

    • Incorporar al procesador un conjunto de
      registros globales, registros fijos en cuanto a su
      número y accesibles por todos los procedimientos,
      conlleva un hardware añadido que se encarga de adaptar
      la división en el direccionamiento de los registros ya
      que se consideran que desde el 0 al 7 indican registros
      globales únicos y el resto pueden transformarse para
      seleccionar los registros físicos de la ventana en
      curso. El compilador debe decidir qué variables
      globales deben ser asignadas a registros.

    Amplio banco de registros frente a una
    caché

    El banco de registros organizado en
    ventanas funciona como un buffer pequeño y rápido
    que contiene un subconjunto de todas las variables que
    probablemente se usen más, se comporta muy similar que una
    memoria caché (aunque este banco es más
    rápido)

    Banco de registros amplio

    Caché

    Todos los datos escalares
    locales

    Datos escalares locales recientemente
    usados

    Variables individuales

    Bloques de memoria

    Variables globales asignadas por el
    compilador

    Variables globales usadas
    recientemente

    Salvaguarda/restauración
    basadas en la profundidad de anidamiento

    Salvaguarda/restauración
    basadas en el algoritmo de reemplazo

    Direccionamiento a
    registros

    Direccionamiento a memoria

    Incluso en el caso de que la caché
    sea tan rápida como el banco de registros, el tiempo de
    acceso será considerablemente mayor, porque para
    referenciar una posición de memoria en la caché se
    necesita un dirección de memoria completa y la complejidad
    de estar operación depende del modo de direccionamiento.
    En conclusión, el banco de registros basado en ventanas es
    superior para datos escalares locales, no tanto para los
    registros globales dado que la caché es capaz de manipular
    tanto variables globales como locales. Un banco de registros
    puede hacer un uso ineficiente del espacio ya que no todos los
    procedimientos necesitarán todo el espacio de ventana
    asignado a ellos, así mismo la caché tiene el
    problema de que los datos se leen por bloques que tienen algo o
    mucho que no se usará.

    Optimización de registros basada
    en el compilador P497

    Cuando se dispone de un pequeño
    número de registros (16-32), el uso optimizado de ellos es
    responsabilidad del compilador. En HLL no se tiene referencias
    explícitas a los registros. El objetivo del compilador es
    mantener en registros en lugar de en memoria los operandos
    necesarios para tantos cálculos como sea posible y
    minimizar las operaciones de carga y almacenamiento. Cada
    cantidad del programa candidata para residir en un registro se
    asigna a un registro simbólico o virtual, el compilador
    entonces asigna el número ilimitado de registros
    simbólicos a un número fijo de registros reales.
    Los registros virtuales cuya utilización no se solape
    pueden compartir el mismo registro real. Si en una parte del
    programa hay más cantidades a tratar que registros reales,
    algunas de las cantidades se asignan a posiciones de memoria. Lo
    esencial de la optimización es decidir qué
    cantidades tienen que ser asignadas a registros en un determinado
    punto del programa, la técnica más usada en RISC se
    conoce como coloreado de grafos, la cual procede de la
    topología.

    ¿Por qué
    CISC?

    Repertorios de instrucciones más
    ricos, instrucciones más complejas, todo esto motivado por
    el deseo de simplificar los compiladores y de mejorar las
    prestaciones. Si existen instrucciones máquina que se
    parezcan a sentencias del HLL la tarea del escritor de
    compiladores se simplifica. Pero es difícil descubrir
    casos que se ajusten perfectamente a la construcción. Otra
    esperanza era que los CISC produzcan programas más
    pequeños y más rápidos. Los programas
    más pequeños ocupan menos memoria, pero como la
    memoria es tan barata hoy, esto no es una gran ventaja. Tiene
    mayor importancia el hecho de que programas más
    pequeño mejoren las prestaciones: hay que captar menos
    bytes de instrucciones y los programas más pequeños
    ocupan menos páginas reduciendo los fallos de
    página. Comparando con un RISC, el programa para CISC
    puede ser más corto (tiene menos instrucciones) pero no
    necesariamente debe ocupar menos bits de memoria. El otro factor
    que motivaba a CISC era que le ejecución de instrucciones
    fuera más rápida, pero debido a que la unidad de
    control completa debe hacerse más compleja, y/o la memoria
    de control del microprograma ha de hacerse más grande,
    para acomodar un repertorio más rico, todo esto aumenta el
    tiempo de ejecución de las instrucciones
    sencillas.

    Características del RISC
    P501

    Características comunes del
    RISC:

    • Una instrucción por
      ciclo
      , esto es una instrucción máquina
      cada ciclo máquina; el ciclo máquina es el
      tiempo que se tarda en captar dos operandos desde dos
      registros, realizar una operación de la ALU y
      almacenar el resultado en un registro. Como no hay que
      acceder a la memoria de control de microprograma durante la
      ejecución esto hace más rápida la
      ejecución.

    • Operaciones registro a
      registro,
      menos LOAD y STORE para acceder a memoria, el
      resto de operaciones son todas entre registros. Un repertorio
      RISC puede incluir sólo una o dos instrucciones
      ADD

    • Modos de direccionamiento
      sencillos
      , casi todas las instrucciones RISC usan
      direccionamiento sencillo a registro, aunque se pueden
      incluir varios modos adicionales y otros modos más
      complejos se pueden sintetizar por un software a partir de
      los simples

    • Formato de instrucción
      sencillos
      , generalmente se usa un formato o unos pocos,
      la longitud de las instrucciones es fija y alineada en los
      límites de una palabra.

    Características CISC frente a
    RISC P504

    Un RISC clásico:

    • 1. Un único tamaño
      de instrucción

    • 2. Ese tamaño es
      típicamente cuatro bytes

    • 3. Pocos modos de direccionamiento
      de datos, típicamente menor que cinco.

    • 4. No se usa direccionamiento
      indirecto

    • 5. No hay operaciones que combinen
      carga/almacenamiento con cálculos
      aritméticos

    • 6. No se direcciona más de
      un operando de memoria por instrucción

    • 7. Las operaciones de
      carga/almacenamiento no admiten una alineación de
      datos arbitraria

    • 8. Un número máximo
      de usos de la unidad de gestión de memoria de una
      dirección de dato en cada
      instrucción

    • 9. El número de bits de un
      campo designador de registro entero es de cinco o más
      bits.

    • 10. El número de bits de un
      campo designador de registro de coma flotante es de cuatro o
      más

    Muchos diseños incluyen
    características de RISC y CISC: PowerPC y Pentium
    II

    Clase 7

    Memoria
    P104

    La memoria de un computador tiene una
    organización jerárquica. En el nivel superior (el
    más cercano al procesador) están los registros del
    procesador, luego uno o más niveles de caché (L1,
    L2, etc.), le sigue la memoria principal (construida de memoria
    dinámicas de acceso aleatorio (DRAM). Todas estas son
    memorias internas del computador. La jerarquía sigue con
    la memoria externa, siendo el siguiente nivel un disco duro fijo
    y uno o más niveles de soportes extraíbles como
    discos ópticos, cintas, entre otros. A medida que
    descendemos en la jerarquía de memoria disminuye el coste
    por bit, aumenta la capacidad y crece el tiempo de acceso. La
    estrategia es organizar los datos y los programas en memoria de
    manera que las palabras de memoria necesarias estén
    normalmente en la memoria más rápida.

    Características de los sistemas
    de memoria

    Ubicación indica si la
    memoria es interna o externa al computador.

    Capacidad se expresa en
    términos de bytes o de palabras para las memorias
    internas.

    Unidad de transferencia es igual
    al número de líneas de entrada/salida de datos del
    módulo de memoria, para memorias internas.

    • Palabra, es la unidad natural
      de organización de la memoria. Su tamaño suele
      coincidir con el número de bits utilizados para
      representar números y con la longitud de las
      instrucciones.

    • Unidades direccionables, es la
      palabra. Sin embargo muchos de los sistemas permiten
      direccionar a nivel de bytes.

    • Unidad de transferencia, para
      la memoria principal es el número de bits que se leen
      o escriben en memoria a la vez. No tiene por qué
      coincidir con una palabra o con una unidad direccionable.
      Para la memoria externa los datos se transfieren en bloques,
      unidades más grandes que la palabra.

    Método de acceso con las
    siguientes variantes:

    • Acceso secuencial, la memoria
      se organiza en unidades de datos llamadas registros, el
      acceso deber realizarse con una secuencia lineal
      específica. Utiliza mecanismo de lectura/escritura.
      Tiempo de acceso variable.

    • Acceso directo, los bloques
      individuales o registros tienen una dirección
      única basada en su dirección física.
      Utiliza un mecanismo de lectura/escritura. Tiempo de acceso
      variable.

    • Acceso aleatorio, cada
      posición direccionable de memoria tiene un
      único mecanismo de acceso cableado físicamente.
      El tiempo de acceso es constante e independiente de la
      secuencia de accesos previos. La memoria principal y algunos
      sistemas de caché son de acceso aleatorio.

    • Asociativa, es del tipo de
      acceso aleatorio que permite comparar ciertas posiciones de
      bits dentro de una palabra en busca de hacer coincidir unos
      valores dados y hacer esto para todas las palabras
      simultáneamente. Por tanto, una palabra es recuperada
      basándose en una porción de su contenido en
      lugar de su dirección. Lo usan las memorias
      caché.

    Prestaciones y sus tres
    parámetros de medida:

    • Tiempo de acceso (latencia),
      es el tiempo que tarda en situar el mecanismo de
      lectura/escritura en la posición deseada; en el acceso
      aleatorio es el tiempo que transcurre desde el instante en
      que se presenta un dirección a la memoria hasta que el
      dato, está disponible para su uso, o ha sido
      memorizado.

    • Tiempo de ciclo de memoria, se
      aplica a las de acceso aleatorio, consiste en el tiempo de
      acceso y algún tiempo más que se requiere antes
      de que pueda iniciarse un segundo acceso a memoria. Depende
      de las características del bus del sistema y no del
      procesador.

    • Velocidad de transferencia, es
      la velocidad a la que se pueden transferir datos a, o desde,
      una unidad de memoria.

    Soportes físicos para las
    memorias como ser semiconductoras, memorias de superficie
    magnética, memorias ópticas y
    magneto-ópticas.

    Características
    físicas
    , en memorias volátiles la
    información se va perdiendo o desaparece cuando se
    desconecta la alimentación. En las no volátiles la
    información, una vez grabada, permanece sin deteriorarse
    hasta que se modifique intencionadamente, no se necesita fuente
    de alimentación para retener la
    información.

    Organización es su
    disposición o estructura física en bits para formar
    palabras.

    Jerarquía de
    memoria

    Memorias con muchas capacidad son
    más baratas pero a su vez más lentas. Las
    más rápidas son más caras y de menor
    capacidad. La solución a este dilema es no contar con un
    solo componente de memoria sino emplear una jerarquía de
    memoria. Cuando se desciende en la jerarquía
    ocurre:

    • a. Disminuye el coste por
      bit

    • b. Aumenta la capacidad

    • c. Aumenta el tiempo de
      acceso

    • d. Disminuye la frecuencia de
      acceso a la memoria por parte del procesador

    La base para la condición d. es
    conocido como localidad de las referencias que implica
    lo siguiente: como el procesador trabaja principalmente con
    agrupaciones fijas de referencias a memoria en periodos de tiempo
    cortos, es posible organizar los datos a través de la
    jerarquía de tal manera que el porcentaje de accesos a
    cada nivel siguiente más bajo sea menor que al nivel
    anterior; las agrupaciones actuales pueden ubicarse
    temporalmente en el nivel 1, de vez en cuando una de las
    agrupaciones del nivel 1 tendrá que ser devuelta al nivel
    2 a fin de que deje sitio para que entre otra nueva
    agrupación al nivel 1. Se puede aplicar a más de
    dos niveles de memoria. Memoria caché
    P111

    Su objetivo es lograr que la velocidad de
    la memoria sea lo más rápida posible, consiguiendo
    al mismo tiempo un tamaño grande al precio de memorias
    semiconductoras menos costosas. La caché contiene una
    copia de partes de la memoria principal. Cuando el procesador
    intenta leer una palabra de memoria, se hace una
    comprobación para ver si la palabra está en la
    caché; si es así, se entrega dicha palabra al
    procesador, si no, un bloque de memoria principal (un cierto
    número de palabras) se transfiere a la caché y
    luego la palabra es entregada al procesador. La caché
    consta de C líneas, cada línea contiene
    K palabras, más una etiqueta de unos cuantos
    bits. Tamaño de línea es el número de
    palabras que hay en la línea.

    Elementos de diseño de la
    caché P114

    Tamaño de caché:
    cuanto más grande es la caché, mayor es el
    número de puertas implicadas en direccionarla;
    Cachés más grandes tienden a ser ligeramente
    más lentas que las pequeñas. Imposible predecir un
    tamaño óptimo.

    Función de correspondencia:
    Como hay menos líneas de caché que bloques de
    memoria principal, se necesita un algoritmo que haga corresponder
    bloques de memoria principal a líneas de caché.
    Esto determina cómo se organiza la caché, se pueden
    utilizar tres técnicas:

    • Correspondencia directa,
      consiste en hacer corresponder cada bloque de memoria
      principal a solo una línea posible de caché.
      Usa una parte de la dirección del bloque de memoria
      principal como número de línea en la
      caché y esto proporciona una correspondencia o
      asignación única de cada bloque de memoria
      principal en la caché. Desventaja, hay una
      posición concreta de caché para cada bloque
      dado, por ello si un programa referencia repetidas veces a
      palabra de dos bloques diferentes asignado en la misma
      línea, dichos bloques se estarían
      intercambiando continuamente en la caché,
      provocaría una tasa de aciertos baja (vapuleo o
      trashing).

    Etiqueta

    Índice, línea de
    caché

    Palabras

    • Correspondencia asociativa,
      permite que cada bloque de memoria principal pueda cargarse
      en cualquier línea de la caché. Hay
      flexibilidad para que cualquier bloque sea reemplazado cuando
      se va a escribir uno nueva en la caché. Desventaja,
      requiere una compleja circuitería para examinar en
      paralelo las etiquetas de todas las líneas de
      caché.

    Etiqueta

    Palabras

    • Correspondencia asociativa por
      conjuntos
      , la caché se divide en v
      conjuntos, cada uno de k líneas. La
      lógica de control de la caché interpreta un
      dirección de memoria como tres campos: etiqueta,
      conjunto y palabra. La etiqueta de una dirección de
      memoria es mucho más corta y se compara solo con las
      k etiquetas dentro de un mismo conjunto.

    Etiqueta

    Conjunto

    Palabra

    Algoritmos de sustitución:
    una vez llena la caché, para introducir un nuevo bloque
    debe sustituirse uno de los boques existentes. Para el caso de
    correspondencia directa, solo hay una posible línea para
    cada bloque particular y no hay elección posible. Para las
    técnicas asociativas se requieren algoritmos de
    sustitución. Tales algoritmos se implementan en hardware,
    para así conseguir alta velocidad.

    • 1. "Utilizado menos
      recientemente", LRU (least-recently used
      ): probalbmente
      el más efectivo, se sustituye el bloque que se ha
      mantenido en la caché por más tiempo sin haber
      sido referenciado. Cuando una línea es refernciada se
      pone a 1 su bit de USO y a 0 el de la otra línea del
      mismo conjunto (para la asociativa por conjunto de dos
      vías). Cuando va a transferirse un bloque al conjunto
      se utiliza la línea cuyo bit de USO es 0.

    • 2. "Primero en entrar-primero
      en salir", FIFO
      : se sustituye aquel bloque que ha estado
      más tiempo en la caché. Se puede implementar
      mediante un técnica cíclica o buffer
      circular.

    • 3. "Utilizado menos
      frecuentemente", LFU (least-frequently used
      ): se
      sustituye aquel bloque del conjunto que ha experimentado
      menos referencias. Se puede implementar asociando un contador
      a cada línea.

    • 4. Aleatoria: no se basa
      en el grado de utilización, simplemente selecciona una
      línea al azar entre las posibles candidatas. Presenta
      prestaciones ligeramente inferiores a un algoritmo basado en
      la utlización.

    Política de
    escritura:

    En acierto, cuando el dato es
    existente:

    • 1. Escritura inmediata:
      todas las operaciones de escritura se hacen tanto en
      caché como en memoria principal, asegurando que el
      contenido de la memoria principal siempre sea válido.
      Desventaja, genera un tráfico sustancial con la
      memoria que puede originar un cuello de botella.

    • 2. Post-escritura:
      minimiza las escrituras en memoria. Las actualizaciones se
      hacen solo en la caché. Se activa un bit ACTUALIZAR
      asociado a la línea cuando se tiene una
      actualización. Luego, cuando el bloque es sustituido,
      es escrito en memoria principal si y solo si el bit
      ACTUALIZAR está activo. Problema, se tienen porciones
      de memoria principal que no son válidas, y los accesos
      por parte de los módulos de E/S tendrán que
      hacerse solo a través de la caché; esto
      complica la circuitería y genera un cuello de botella
      potencial.

    En fallo, cuando el dato se
    crea:

    • 1. Write-allocate, la
      información se lleva de la memoria principal a la
      caché. Se sobrescribe en la caché

    • 2. No write-allocate, El
      bloque no se lleva a la memoria caché. Se escribe
      directamente en la memoria principal

    Clase 8

    Buses del sistema
    P75

    Un computador está constituido por
    un conjunto de unidades o módulos de tres tipos
    elementales que se comunican entre sí (procesador,
    memoria, E/S). La estructura de interconexión es el
    conjunto de líneas que conectan los diversos
    módulos.

    • Memoria, generalmente
      constituidos por N palabras de la misma longitud.
      Una palabra puede leerse de, o escribirse en la memoria. Se
      indican mediante señales de control, leer y
      escribir.

    • Módulo de E/S, puede
      controlar un dispositivo externo, operaciones de lectura y
      escritura. Puede enviar señales de interrupción
      al procesador.

    • Procesador, lee instrucciones
      y datos, escribe datos una vez los ha procesado, utiliza
      ciertas señales para controlar el funcionamiento del
      sistema. Puede recibir señales de
      interrupción

    Tipos de transferencia
    necesarias:

    • Memoria a procesador, el procesador lee
      una instrucción o un dato desde la memoria

    • Procesador a memoria, el procesador
      escribe un dato en la memoria

    • E/S a procesador, el procesador lee
      datos de un dispositivo de E/S a través de un
      módulo de E/S

    • Procesador a E/S, el procesador
      envía datos al dispositivo de E/S

    • Memoria a E/S y viceversa, un
      módulo de E/S puede intercambiar datos directamente
      con la memoria, sin pasar por el procesador utilizando el
      acceso directo a memoria (DMA)

    Interconexión con buses
    P77

    Un bus es un camino de comunicación
    entre dos o más dispositivos. Al bus se conectan varios
    dispositivos y cualquier señal transmitida por uno de esos
    dispositivos está disponible para que los otros
    dispositivos conectados al bus puedan acceder a ella. Solo un
    dispositivo puede transmitir con éxito en un momento dado,
    sino podrían las señales solaparse y
    distorsionarse. Un bus está constituido por varios caminos
    de comunicación o líneas. Cada línea es
    capaz de transmitir señales binarias representadas por 1 y
    por 0. Se puede transmitir una secuencia de dígitos
    binario a través de una única línea. Se
    pueden utilizar varias líneas del bus para transmitir
    dígitos binarios simultáneamente (en paralelo, un
    dato de 8 bits con ocho líneas del bus). Los computadores
    poseen diferentes tipos de buses. El bus que conecta los
    componentes principales del computador se denomina bus del
    sistema
    .

    Estructura del bus

    Constituido usualmente por entre cincuenta
    y cien líneas. A cada línea se le asigna un
    significado o una función particular. Se clasifican tres
    grupos funcionales de líneas: líneas de datos, de
    direcciones y de control. Pueden existir líneas de
    alimentación para suministrar energía a lo
    módulos conectados al bus.

    Líneas de datos,
    proporcionan un camino para transmitir datos entre los
    módulos del sistema. El conjunto de estas líneas se
    le llama bus de datos. La anchura del bus de
    datos es la cantidad de líneas que incluye (32 o cientos
    de líneas). El número de líneas determina
    cuántos bits se pueden transferir al mismo
    tiempo.

    Líneas de dirección,
    se utilizan para designar la fuente o el destino del dato situado
    en el bus de datos.

    Líneas de control, se
    utilizan para controlar el acceso y el uso de las líneas
    de datos y de direcciones. Las señales de control
    transmiten tanto ordenes como información de
    temporización entre los módulos del sistema. Estas
    señales indican la validez de los datos y las direcciones.
    Por ejemplo, señal de escritura/lectura en memoria,
    petición de interrupción, señales de
    reloj.

    Jerarquía de buses
    múltiples P80

    Si se conectan muchos dispositivos al bus
    las prestaciones pueden disminuir, por dos causas
    principales:

    • A más dispositivos conectados al
      bus, mayor es el retardo de propagación. Este retardo
      determina el tiempo que necesitan los dispositivos para
      coordinarse en el uso del bus

    • El bus puede convertirse en un cuello
      de botella a medida que las peticiones de transferencia
      acumuladas se aproximan a la capacidad del bus. Se puede
      resolver usando buses más anchos e incrementando la
      velocidad a la que el bus transfiere los datos

    La mayoría de los computadores
    utilizan varios buses, organizados jerárquicamente. Un bus
    local conecta el procesador a una memoria caché y se
    pueden conectar también uno o más dispositivos
    locales. El controlador de memoria caché conecta la
    caché no solo al bus local sino también al bus de
    sistema. Se usan buses de expansión para conectar
    controladores de E/S al bus de sistema. La interfaz del bus de
    expansión regula las transferencias de datos entre el bus
    de sistema y los controladores conectados al bus de
    expansión. Esto permite conectar al sistema una amplia
    variedad de dispositivos de E/S y al mismo tiempo aislar el
    trafico de información entre la memoria y el procesador
    del tráfico correspondiente a las E/S.

    Elementos de diseño de un bus
    P82

    Tipos de buses: se dividen en
    dedicadas y multiplexadas. Una línea de bus dedicada
    está permanente asignada a una función o a un
    subconjunto físico de componente del computador. El
    multiplexado en el tiempo es un método que usa las mismas
    líneas para distintos usos. Ventaja del multiplexado es
    que usa menos líneas, cosa que ahorra espacio y costes; la
    desventaja es que se necesita una circuitería más
    compleja en cada módulo, puede producirse una
    reducción de las prestaciones por que cuando deben
    compartir las mismas líneas no pueden producirse en
    paralelo. La dedicación física se refiere al uso de
    múltiples buses, cada uno de los cuales conecta solo un
    subconjunto de módulos; una ventaja es su elevado
    rendimiento por haber menos conflictos por el acceso al bus, y
    una desventaja es el incremento en el tamaño y el costo
    del sistema.

    Método de arbitraje, se da
    porque más de un módulo puede necesitar el control
    del bus y solo una unidad puede transmitir a través del
    bus en un instante dado. Se clasifican en centralizados o
    distribuidos.

    • Centralizado, un único
      dispositivo hardware (controlador del bus o árbitro)
      es responsable de asignar tiempos en el bus. El dispositivo
      puede estar en un módulo separado o ser parte del
      procesador.

    • Distribuido, no existe un
      controlador central, en su lugar, cada módulo dispone
      de lógica para controlar el acceso y los
      módulos actúan conjuntamente para compartir el
      bus

    En ambos métodos de arbitraje el
    propósito es designar un dispositivo, el procesador o un
    módulo de E/S como maestro del bus.

    Temporización, hace
    referencia a la forma en la que se coordinan los eventos en el
    bus. Pueden ser síncrona o asíncrona.

    • Síncrona, la presencia
      de un evento en el bus está determinada por un reloj.
      El bus incluye una línea de reloj a través de
      la que se transmite una secuencia en la que se alternan
      intervalos regulares de igual duración a uno y a cero.
      Un único intervalo a uno seguido de otro a cero se
      conoce como ciclo de reloj o ciclo de bus.
      Todos los dispositivos del bus pueden leer la línea de
      reloj y todos los eventos empiezan al principio del ciclo de
      reloj. Es más fácil de implementar y comprobar,
      pero es menos flexible que la asíncrona.

    • Asíncrona, la presencia
      de un evento en el bus es consecuencia y depende de que se
      produzca un evento previo. Pueden compartir el bus una mezcla
      de dispositivos lentos y rápidos, utilizando tanto las
      tecnologías mas antiguas como las más
      recientes, que en la síncrona no se puede ya que todos
      los dispositivos debe utilizar la misma frecuencia de
      reloj.

    Anchura del bus, afecta a las
    prestaciones del sistema: cuanto más ancho es el bus de
    datos, mayor es el número de bits que se transmiten a la
    vez. La anchura del bus de direcciones afecta a la capacidad del
    sistema: cuanto más ancho es el bus de direcciones, mayor
    es el rango de posiciones a las que se puede hacer
    referencia.

    Tipo de transferencia de datos,
    todos los buses permiten tanto transferencias de escritura (dato
    de maestro a esclavo) como de lectura (dato de esclavo a
    maestro). En el caso de un bus con direcciones y datos
    multiplexados, el bus se utiliza primero para especificar la
    dirección y luego para transferir el dato. En una
    operación de lectura, hay un tiempo de espera mientras el
    dato se está captando del dispositivo esclavo para
    situarlo en el bus. Tanto para lectura como escritura, puede
    haber también un retardo si se usa algún
    procedimiento de arbitraje para acceder al control del bus en el
    resto de la operación. Algunos buses también
    permiten transferencias de bloques de datos.

    PCI P87

    El bus PCI (Interconexión de
    Componente Periférico) es un bus muy popular de ancho de
    banda elevado, independiente del procesador, que se puede
    utilizar como un bus de periféricos. El PCI proporciona
    mejores prestaciones para los subsistemas de E/S de alta
    velocidad. El PCI ha sido diseñado específicamente
    para ajustarse, económicamente a los requisitos de E/S de
    los sistemas actuales. Se implementa con muy pocos circuitos
    integrados y permite que otros buses se conecten al bus PCI.
    Utiliza temporización síncrona y un esquema de
    arbitraje centralizado. Puede configurarse como un bus de 32 o 64
    bits. Tiene 49 líneas de señal obligatorias, las
    cuales se dividen en grupos funcionales:

    • Terminales de sistema, conformadas por
      los terminales de reloj y de inicio.

    • Terminales de direcciones y datos,
      incluye 32 líneas para datos y direcciones
      multiplexadas en el tiempo. Las otras líneas se usan
      para interpretar y validar las líneas de señal
      correspondientes a los datos y las direcciones

    • Terminales de control de interfaz,
      controlan la temporización de las transferencias y
      proporcionan coordinación entre los que inician y los
      destinatarios.

    • Terminales de arbitraje, no son
      líneas compartidas, cada maestro del PCI tiene su par
      propio de líneas que lo conectan directamente al
      arbitro del bus PCI

    • Terminales para señales de
      error, usadas para indicar errores de paridad u
      otros

    Además de 51 señales
    opcionales:

    • Terminales de
      interrupción

    • Terminales de soporte de
      caché

    • Terminales de ampliación a bus
      de 64 bits

    • Terminales de test

    Ordenes, transferencia de datos y
    arbitraje del PCI

    La actividad del bus consiste en
    transferencias entre elementos conectados al bus. Maestro es el
    que inicia la transferencia.

    La transferencia de datos en el bus PCI es
    una transacción única que consta de una fase de
    direccionamiento y una o más fases de datos.

    Utiliza un arbitraje centralizado
    síncrono en el que cada maestro tiene una única
    señal de petición y cesión del bus, estas se
    conectan a un árbitro central. El arbitraje se produce al
    mismo tiempo que el maestro del bus actual está realizando
    una transferencia de datos, por tanto no se pierden ciclos de bus
    en realizar el arbitraje; esto es conocido como arbitraje
    oculto o solapado.

    Clase 9

    Procesadores
    superescalares P528

    Un procesador superescalar es aquél
    que usa múltiples cauces de instrucciones independientes.
    Varios flujos de instrucciones se procesan
    simultáneamente.

    La supersegmentación aprovecha el
    hecho de que muchas etapas del cauce realizan tareas que
    requieren menos de medio ciclo de reloj.

    La aproximación superescalar depende
    de la habilidad para ejecutar múltiples instrucciones en
    paralelo. El paralelismo en las instrucciones se refiere al grado
    en el que, en promedio, las instrucciones de un programa se
    pueden ejecutar en paralelo. Para maximizar el paralelismo se
    usan técnicas de hardware u optimizaciones por el
    compilador. Presenta cinco limitaciones:

    • Dependencia de datos verdadera, cuando
      una instrucción necesita un dato que aún no
      terminó de usar/resolver la anterior
      instrucción

    • Dependencia relativa al procedimiento,
      presencia de saltos, uso de instrucciones de longitud
      variable

    • Conflicto en los recursos, es una pugna
      de dos o más instrucciones por el mismo recurso al
      mismo tiempo

    • Dependencia de salida

    • Antidependencia

    Paralelismo en las instrucciones y
    paralelismo de la máquina

    Paralelismo en las instrucciones cuando las
    instrucciones de una secuencia son independientes y por tanto
    pueden ejecutarse en paralelo solapándose. Depende de la
    frecuencia de dependencias de datos verdaderas y dependencias
    relativas al procedimiento que haya en el código. El
    paralelismo de la máquina es una medida de la capacidad
    del procesador para sacar partido al paralelismo en las
    instrucciones. Depende del número de instrucciones que
    pueden captarse y ejecutarse al mismo tiempo (número de
    cauces paralelos) y de la velocidad y sofisticación de los
    mecanismo que usa el procesador para localizar instrucciones
    independientes. El empleo de instrucciones con longitud fija,
    como en un RISC, aumenta el paralelismo en las
    instrucciones.

    Políticas de emisión de
    instrucciones

    El procesador tiene que ser capaz de
    identificar el paralelismo en las instrucciones y organizar la
    captación, decodificación y ejecución de las
    instrucciones en paralelo. El procesador intenta localizar
    instrucciones más allá del punto de
    ejecución en curso, que puedan introducirse en el cauce y
    ejecutarse, hay tres ordenaciones importantes:

    • El orden en que se captan las
      instrucciones

    • El orden en que se ejecutan las
      instrucciones

    • El orden en que las instrucciones
      actualizan los contenidos de los registros y de las
      posiciones de memoria

    La única restricción del
    procesador, con respecto a la alteración de estos ordenes,
    es que el resultado debe ser correcto. Categorías de las
    políticas de emisión de instrucciones en los
    procesadores superescalares:

    • Emisión en orden y
      finalización en orden
      , emite instrucciones en el
      orden exacto en que lo haría una ejecución
      secuencial y escribe los resultados en ese mismo
      orden.

    • Emisión en orden y
      finalización desordenada
      , se usa en los
      procesadores RISC escalares para mejorar la velocidad de las
      instrucciones que necesitan ciclos. Con la
      finalización desordenada puede haber cualquier
      número de instrucciones e la etapa de ejecución
      en un momento dado, hasta alcanzar el máximo grado de
      paralelismo de la máquina. La finalización
      desordenada necesita una lógica de emisión de
      instrucciones más compleja que la finalización
      en orden. Además es más difícil ocuparse
      de las interrupciones y excepciones. El procesador debe
      asegurarse que la reanudación tiene en cuenta que, en
      el omento de la interrupción, algunas instrucciones
      posteriores a la instrucción que provocó dicha
      interrupción pueden haber finalizado ya.

    • Emisión desordenada y
      finalización desordenada
      : con la emisión
      en orden, el procesador solo decodificará
      instrucciones hasta el punto de dependencia o conflicto. Un
      buffer llamado ventana de instrucciones desacopla las etapas
      del cauce de decodificación y ejecución,
      entonces cuando un procesador termina de decodificar un
      instrucción, la coloca en la ventana de instrucciones.
      Ventajas, el procesador tiene capacidad de
      anticipación, las instrucciones se emiten desde la
      ventana de instrucciones sin tener en cuenta su orden en el
      programa. El programa debe funcionar correctamente,
      única restricción. Antidependencia, la segunda
      instrucción destruye un valor que usa la primera
      instrucción.

    Renombramiento de
    registros

    Las dependencias de salida y las
    antidependencias, por su parte, surgen porque los valores de los
    registros no pueden reflejar ya la secuencia de valores dictada
    por el flujo del programa; con el renombramiento de registros, el
    hardware del procesador asigna dinámicamente los
    registros, que están asociados con los valores que
    necesitan las instrucciones en diversos instantes de tiempo.
    Cuando la ejecución de una instrucción guarda un
    resultado en registro, se almacena en un registro nuevo, se
    asignan dinámicamente.

    Predicción de saltos,
    ejecución e implementación
    superescalar

    Con la llegada de RISC se exploró la
    estrategia de salto retardado, la cual mantiene lleno el cauce
    mientras el procesador capta un nueva secuencia de instrucciones.
    Ocasiona problemas con la dependencias entre instrucciones, en el
    ciclo de retardo. Los superescalares volvieron a las
    técnicas de predicción de saltos anteriores a las
    de los RISC, como la predicción de saltos estática,
    o una predicción dinámica de saltos basada en el
    análisis de la historia de los saltos.

    El programa a ejecutar es una secuencia
    lineal de instrucciones. El proceso de captación de
    instrucciones, que incluye la predicción de saltos, se usa
    para formar un flujo dinámico de instrucciones. Se
    examinan las dependencias de este flujo, u el procesador puede
    eliminar las que sean artificiales. El procesador envía
    entonces las instrucciones a una ventana de ejecución. En
    esta ventana, las instrucciones ya no forman un flujo secuencial
    sino que están estructuradas de acuerdo a sus dependencias
    de datos verdaderas. El procesador lleva a cabo la etapa de
    ejecución de cada instrucción en un orden
    determinado por las dependencias de datos verdaderas y la
    disponibilidad de los recursos hardware. Por último las
    instrucciones se vuelven a poner conceptualmente en un orden
    secuencial y sus resultados se almacenan.

    Elementos principales de un procesador
    superescalar:

    • Estrategias de captación de
      instrucciones que capten múltiples instrucciones al
      mismo tiempo, prediciendo los resultados de los saltos
      condicionales y captando más allá de
      ellas.

    • Lógica para determinar
      dependencias verdaderas entre valores de registros y
      mecanismo para comunicar esos valores a donde sean necesarios
      durante la ejecución

    • Mecanismos para iniciar o emitir
      múltiples instrucciones en paralelo

    • Recursos para le ejecución en
      paralelo de múltiples instrucciones, que incluyan
      múltiples unidades funcionales segmentadas y
      jerarquías de memoria capaces de atender
      múltiples referencias a memoria

    • Mecanismos para entregar el estado del
      procesador en el orden correcto

    Clase 10

    Procesamiento
    paralelo P669

    El uso de varios procesadores que puedan
    ejecutar en paralelo una carga de trabajo data incrementa las
    prestaciones de un sistema. Multiprocesadores simétricos y
    los clusters, más comunes; sistemas de acceso no uniforme
    a memoria, nuevo. Un SMP es un computador constituido
    por varios procesadores similares interconectados mediante un bus
    o algún tipo de estructura de conmutación. Cuando
    en un único chip se implementan varios procesadores, se
    habla de multiprocesador monochip. Los procesadores
    multihebra consisten en repetir algunos componentes de
    un procesador para que este pueda ejecutar varias hebras
    concurrentemente. Un cluster es un grupo de computadoras
    completos interconectados y trabajando juntos como un solo
    recurso de cómputo. Computador completo significa que
    puede funcionar autónomamente, fuera del cluster. Un
    sistema NUMA es un multiprocesador de memoria compartida
    en el que el tiempo de acceso de un procesador a una palabra de
    memoria varía con la ubicación de la palabra en
    memoria. Los procesadores vectoriales son procesadores
    paralelos de propósito especifico, diseñados para
    procesar eficientemente vectores o matrices de datos.

    Tipos de sistemas
    paralelos

    • Una secuencia de instrucciones y
      una secuencia de datos (SISD
      ): un único
      procesador interpreta una única secuencia de
      instrucciones para operar con los datos almacenados en una
      única memoria. Los monoprocesadores.

    • Una secuencia de instrucciones y
      múltiples secuencias de datos (SIMD
      ): una
      única instrucción máquina controla paso
      a paso la ejecución simultánea y sincronizada
      de un cierto número de elementos de proceso. Cada
      elemento de proceso tiene una memoria asociada, de forma que
      cada instrucción es ejecutada por cada procesador con
      un conjunto de datos diferentes. Los procesadores vectoriales
      y los matriciales.

    • Múltiples secuencias de
      instrucciones y una secuencia de datos (MISD
      ): se
      transmite una secuencia de datos a un conjunto de
      procesadores, cada uno de los cuales ejecuta una secuencia de
      instrucciones diferente. Nunca ha sido
      implementada.

    • Múltiples secuencias de
      instrucciones y múltiples secuencias de datos
      (MIMD
      ): un conjunto de procesadores ejecuta
      simultáneamente secuencias de instrucciones diferentes
      con conjuntos de datos diferentes. Los SMP, clusters y los
      sistemas NUMA.

    Multiprocesadores simétricos
    P672

    • 1. Hay dos o más
      procesadores similares de capacidades comparables.

    • 2. Estos procesadores comparten la
      memoria principal y las E/S y están interconectados
      mediante un bus u otro tipo de sistema de
      interconexión (tiempo de acceso a memoria
      aproximadamente el mismo para todos los
      procesadores)

    • 3. Todos los procesadores
      comparten los dispositivos de E/S, bien a través de
      los mismos canales o mediante canales distintos que
      proporcionan caminos de acceso al mismo
      dispositivo.

    • 4. Todos los procesadores pueden
      desempeñar las mismas funciones.

    • 5. El sistema está
      controlado por un sistema operativo integrado que proporciona
      la interacción entre los procesadores y sus programas
      a los niveles de trabajo, tarea, fichero y datos.

    Ventajas de un SMP frente a un
    monoprocesador:

    • Prestaciones: si el trabajo
      puede organizarse para ejecutarse en paralelo, entonces un
      sistema con varios procesadores mejorará las
      prestaciones que con uno solo del mismo tipo.

    • Disponibilidad: debido a que
      todos los procesadores pueden realizar las mismas funciones,
      un fallo en un procesador no hará que el computador se
      detenga.

    • Crecimiento incremental: se
      aumentan las prestaciones añadiendo más
      procesadores

    • Escalado: los fabricantes
      pueden ofrecer una gama variada de productos con precios y
      prestaciones diferentes en función del número
      de procesadores que configuran el sistema.

    Bus de tiempo compartido

    Es el mecanismo más simple para
    construir un sistema multiprocesador.

    • Direccionamiento: debe ser
      posible distinguir los módulos del bus par determinar
      la fuente y el destino de los datos

    • Arbitraje: cualquier
      módulo de E/S puede funcionar temporalmente como un
      maestro. Utiliza algún tipo de esquema de
      prioridad.

    • Tiempo compartido: cuando un
      módulo está controlando el bus, los otros
      módulos no tienen acceso al mismo y deben, si es
      necesario, suspender su operación hasta que dispongan
      del bus.

    La organización del bus:

    • Simplicidad: la interfaz
      física y la lógica de cada procesador para el
      direccionamiento, el arbitraje y para compartir el tiempo del
      bus es el mismo que el de un sistema con un solo
      procesador

    • Flexibilidad: es sencillo
      expandir el sistema conectando más procesadores al
      bus

    • Fiabilidad: el bus es un medio
      pasivo, y el fallo de cualquiera de los dispositivos
      conectados no provocaría el fallo de todo el
      sistema.

    Principal desventaja, las prestaciones.
    Todas las referencias a memoria pasan por el bus. La velocidad
    del sistema está limitada por el tiempo de ciclo. Para
    mejorar las prestaciones, es deseable equipar a cada procesador
    de una memoria caché. Surge el problema de coherencia de
    caché, resuelto por el hardware.

    Coherencia de
    caché

    Las soluciones software de coherencia de
    caché intentan evitar la necesidad de circuitería y
    lógica hardware adicional dejando que el compilador y el
    sistema operativo se encarguen del problema. Los mecanismo de
    coherencias basados en el compilador realizan un análisis
    del código y marcan los datos que pueden dar problemas al
    pasar a caché; después el sistema operativo o el
    hardware impiden que se pasen a caché los datos marcados
    como no almacenables en caché. El enfoque más
    sencillo es impedir que cualquier dato compartido se pase a
    caché.

    Las soluciones hardware se denominan
    protocolos de coherencia de caché. Permiten reconocer en
    tiempo de ejecución las situaciones de inconsistencias
    potenciales. El problema se considera solo en el momento que
    aparece. Uso más efectivo de las cachés. Mejora las
    prestaciones en relaciones a las aproximaciones software. Reduce
    la complejidad en el desarrollo del software.

    • Protocolos de directorio:
      Recogen y mantienen la información acerca de
      dónde residen las copias de las líneas. Tiene
      un controlador centralizado que es parte del controlador de
      memoria principal, y un directorio que se almacena en la
      memoria principal, el cual contiene información de
      estado global en relación con los contenido de las
      diferentes cachés locales. Presentan un cuello de
      botella central y el coste de comunicación entre los
      controladores de las distintas cachés y el controlador
      central es otra desventaja. Son efectivos en sistemas de gran
      escala con múltiples buses.

    • Protocolos de sondeo:
      Distribuyen la responsabilidad de mantener la coherencia de
      caché entre todos los controladores de caché
      del multiprocesador. Una caché debe reconocer cuando
      un alinea de las que contiene está compartida con
      otras cachés. Cuando se actualiza una línea de
      caché compartida, debe anunciare a todas las otras
      cachés mediante un mecanismo de difusión. Cada
      controlador de caché es capaz de sondear o espiar la
      red para observar las notificaciones que se difunden, y
      reaccionar adecuadamente. Se usa la aproximación de
      invalidar-si-escritura en multiprocesadores comerciales, se
      marca el estado de cada línea de caché:
      modificado, exclusivo, compartido o no-válido (se usan
      dos bits adicionales).

    Procesamiento multihebra y
    multiprocesadores monochip

    Con el procesamiento multihebra, la
    secuencia de instrucciones se divide en secuencias más
    pequeñas, denominadas hebras, que pueden ejecutarse en
    paralelo. Un proceso es un programa en ejecución
    en un computador:

    • Propiedad de recursos: dispone
      de un espacio de direcciones virtuales para almacenar la
      imagen del proceso, que consta del programa, los datos, la
      pila, entre otros. En ocasiones, pueden poseer recursos como
      la memoria principal, canales de E/S, dispositivos de E/S y
      ficheros.

    • Planificación/ejecución: sigue
      un camino de ejecución a través de uno o
      más programas. Esta ejecución puede
      entremezclarse con la de otros procesos

    Conmutación de proceso, es
    la operación que cambia el proceso que se está
    ejecutando en el procesador por otro proceso. Almacena todos los
    datos del primero y los reemplaza con la información del
    segundo.

    Hebra, es una unidad de trabajo
    dentro de un proceso que se puede asignar al procesador. Se
    ejecuta secuencialmente y puede interrumpirse para que el
    procesador pase a ejecutar otra hebra.

    Conmutación de hebra: el
    control del procesador pasa de una hebra a otra dentro de un
    mismo proceso. Es menos costosa que la conmutación de
    procesos.

    El procesamiento multihebra
    explícito ejecutan concurrentemente instrucciones de
    hebras explícitas diferentes, entremezclando instrucciones
    de hebras diferentes en cauces compartidos o mediante
    ejecución paralela y cauces paralelos. Y el procesamiento
    multihebra implícito hace referencia a la ejecución
    concurrente de varias hebras extraídas de un único
    programa secuencial. Estas pueden ser definidas
    estáticamente por el compilador o dinámicamente por
    el hardware.

    Un procesador multihebra debe proporcionar
    un contador de programa distinto para cada una de las hebras que
    puedan ejecutarse concurrentemente. Se trata cada hebra
    separadamente y usa técnicas superescalares para optimizar
    la ejecución de una hebra.

    Clusters P694

    Un cluster es un grupo de computadores
    completos interconectados que trabajan conjuntamente como un
    único recurso de cómputo, creándose la
    ilusión de que se trata de una sola máquina.
    Computador completo hace referencia a un sistema que puede
    funcionar por sí solo, independientemente del cluster.
    Beneficios:

    • Escalabilidad absoluta: un
      cluster puede tener decenas de máquinas, cada una de
      las cuales puede ser un multiprocesador. Es posible
      configurar clusters grandes que incluso superan las
      prestaciones de los computadores independientes más
      potentes.

    • Escalabilidad incremental: un
      cluster se configura de forma que sea posible añadir
      nuevos sistemas al cluster en ampliaciones
      sucesivas.

    • Alta disponibilidad: puesto
      que cada nodo del cluster es un computador autónomo,
      el fallo de uno, no significa la pérdida del
      servicio.

    • Mejor relación
      precio-prestaciones
      : es posible configurar un cluster
      con mayor o igual potencia de cómputo que un
      computador independiente a mucho menos costo.

    Clusters frente a sistemas SMP
    P700

    Ambos constituyen configuraciones con
    varios procesadores que pueden ejecutar aplicaciones con una alta
    demanda de recursos.

    Ventajas de un SMP:

    • Más fácil de gestionar y
      configurar que un cluster

    • Está mucho más cerca del
      modelo de computador de un solo procesador para el que
      están disponibles casi todas las
      aplicaciones

    • Necesita menos espacio
      físico

    • Consume menos energía que un
      cluster comparable

    • Son plataformas estables y bien
      establecidas

    Ventajas de los Clusters:

    • Superiores a los SMP en términos
      de escalabilidad absoluta e incremental

    • Superiores en términos de
      disponibilidad, todos los componentes del sistema pueden
      hacerse altamente redundantes

    Acceso no uniforme a
    memoria

    Acceso uniforma a memoria (UMA):
    todos los procesadores pueden acceder a toda la memoria principal
    utilizando instrucciones de carga y almacenamiento. El tiempo de
    acceso es el mismo para cualquier región de la memoria. El
    tiempo de acceso a memoria por parte de todos los procesadores es
    el mismo. SMP es UMA.

    Acceso no uniforme a memoria
    (NUMA
    ): todos los procesadores tienen acceso a todas las
    partes de memoria principal utilizando instrucciones de carga y
    almacenamiento. El tiempo de acceso a memoria depende de la
    región a la que se acceda. Para procesadores distintos,
    las regiones de memoria que son más lentas o más
    rápidas son diferentes.

    NUMA con coherencia de caché
    (CC-NUMA
    ): un computador NUMA en el que la coherencia de
    caché se mantiene en todas las cachés de los
    distintos procesadores.

    Motivación

    En un SMP existe un límite
    práctico en el número de procesadores que pueden
    utilizarse. Un esquema de caché reduce el tráfico
    en el bus. A medida que aumentan los procesadores, el
    tráfico en el bus también aumenta. A partir de
    cierto momento, el bus pasa a ser el cuello de botella para las
    prestaciones. En un cluster cada nodo tiene su propia memoria
    principal privada y las aplicaciones no ven la memoria global.
    NUMA retiene las características SMP y brinda
    multiprocesamiento a gran escala. El objetivo de un computador
    NUMA es mantener una memoria transparente desde cualquier parte
    del sistema, al tiempo que se permiten varios nodos del
    multiprocesador, cada uno con su propio bus u otro sistema de
    interconexión interna.

    Organización
    CC-NUMA

    Hay varios nodos independientes, cada uno
    de los cuales es un SMP. Así cada nodo contiene varios
    procesadores, cada uno con sus cachés L1 y L2, más
    memoria principal. Los nodos se interconectan a través de
    un medio de comunicación que podría ser
    algún mecanismo de conmutación, un anillo o
    algún tipo de red. Orden de acceso a memoria, cache L1 y
    caché L2 son locales al procesador; memoria principal es
    local al nodo. Toda la actividad de accesos a memoria es
    automática y transparente al procesador y su
    caché.

    Organización y arquitectura de
    computadoras – William Stallings – 7ma.
    Edición

    P234 = Página 234

     

     

    Autor:

    Juan Ramallo

     

    Partes: 1, 2
     Página anterior Volver al principio del trabajoPágina siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter